﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Collections.Generic;
using System.Collections;

using Data;

namespace Business
{

    public class Evento
    {
        private int idEvento;
        private String nomeEvento;
        private DateTime dataInicio;
        private DateTime dataFim;
        private String descricaoEvento;
        private float precoEvento;
        public String categoria;
        private int organizadorID;
        private String cartaz;

        private String linkEvento;
        private int nPessoas;
        private int nComentarios;
        private int status;

        private Hashtable listaArtistas;
        private Hashtable listaPalcos;
        private ListaComentario listaComentarios;
        private ListaPresenca listaPresencas;
        private DataEvento dataLayer;

        public Evento()
        {
            this.idEvento = -1;
            this.nomeEvento = "";
            this.dataInicio = new DateTime();
            this.dataFim = new DateTime();
            this.descricaoEvento = "";
            this.precoEvento = -1;
            this.categoria = "";
            this.organizadorID = -1;
            this.cartaz = "";
            this.linkEvento = "";
            this.nPessoas = -1;
            this.nComentarios = -1;
            this.status = -1;
            this.listaArtistas = new Hashtable();
            this.listaPalcos = new Hashtable();
            this.listaComentarios = new ListaComentario();
            this.listaPresencas = new ListaPresenca();
            this.dataLayer = new DataEvento();
        }

        public Evento(String nome, DateTime dataInicio, DateTime dataFim, String descricao, float preco, String categoria,String link) {
            this.idEvento = -1;
            this.nomeEvento = nome;
            this.dataInicio = dataInicio;
            this.dataFim = dataFim;
            this.descricaoEvento = descricao;
            this.precoEvento = preco;
            this.categoria = categoria;
            this.organizadorID = -2;
            this.cartaz = cartaz;
            this.linkEvento = link;
            this.nPessoas = 0;
            this.nComentarios = 0;
            this.status = 1;
            this.listaArtistas = new Hashtable();
            this.listaPalcos = new Hashtable();
            this.listaComentarios = new ListaComentario();
            this.listaPresencas = new ListaPresenca();
            this.dataLayer = new DataEvento();
        }


        public Evento(String nome, DateTime dataInicio, DateTime dataFim, String descricao, float preco, String categoria, int organizadorID, String cartaz, String link, int nPessoas, int nComment)
        {
            this.idEvento = -1;
            this.nomeEvento = nome;
            this.dataInicio = dataInicio;
            this.dataFim = dataFim;
            this.descricaoEvento = descricao;
            this.precoEvento = preco;
            this.categoria = categoria;
            this.organizadorID = organizadorID;
            if (cartaz == null)
                this.cartaz = "";
            this.cartaz = cartaz;
            this.linkEvento = link;
            this.nPessoas = nPessoas;
            this.nComentarios = nComment;
            this.status = -1;
            this.listaArtistas = new Hashtable();
            this.listaPalcos = new Hashtable();
            this.listaComentarios = new ListaComentario();
            this.listaPresencas = new ListaPresenca();
            this.dataLayer = new DataEvento();
        }

        public Evento(Evento e) {
            this.idEvento = e.getID();
            this.nomeEvento = e.getNome();
            this.dataInicio = e.getDataInicio();
            this.dataFim = e.getDataFim();
            this.descricaoEvento = e.getDescricao();
            this.precoEvento = e.getPreco();
            this.categoria = e.getCategoria();
            this.organizadorID = e.getOrganizadorID();
            this.cartaz = e.getCartaz();
            this.linkEvento = e.getLink();
            this.nPessoas = e.getNPessoas();
            this.nComentarios = e.getNComentarios();
            this.status = e.getStatus();
            this.listaArtistas = e.getListaArtistas();
            this.listaPalcos = e.getListaPalcos();
            this.listaComentarios = e.getListaComentario();
            this.listaPresencas = e.getListaPresenca();
            this.dataLayer = new DataEvento();
        
        }

        public int getID() { return this.idEvento; }
        public String getNome() { return this.nomeEvento; }
        public DateTime getDataInicio() { return this.dataInicio; }
        public DateTime getDataFim() { return this.dataFim; }
        public String getDescricao() { return this.descricaoEvento; }
        public float getPreco() { return this.precoEvento; }
        public String getCategoria() { return this.categoria; }
        public int getOrganizadorID() { return this.organizadorID; }
        public String getCartaz() { return this.cartaz; }
        public String getLink() { return this.linkEvento; }
        public int getNPessoas() { return this.nPessoas; }
        public int getNComentarios() { return this.nComentarios; }
        public int getStatus() { return this.status; }
        public Hashtable getListaArtistas() { return this.listaArtistas; }
        public Hashtable getListaPalcos() { return this.listaPalcos; }
        public ListaComentario getListaComentario() { return this.listaComentarios; }
        public ListaPresenca getListaPresenca() { return this.listaPresencas; }

        public void setID(int id) { this.idEvento = id; }
        public void setNome(String nome) { this.nomeEvento = nome; }
        public void setDataInicio(DateTime data) { this.dataInicio = data; }
        public void setDataFim(DateTime data) { this.dataFim = data; }
        public void setDescricao(String descricao) { this.descricaoEvento = descricao; }
        public void setPreco(float preco) { this.precoEvento = preco; }
        public void setCategoria(String categoria) { this.categoria = categoria; }
        public void setOrganizadorID(int organizadorID) { this.organizadorID = organizadorID; }
        public void setCartaz(String cartaz) { this.cartaz = cartaz; }
        public void setLink(String link) { this.linkEvento = link; }
        public void setNPessoas(int nPessoas) { this.nPessoas = nPessoas; }
        public void setNComentarios(int nComment) { this.nComentarios = nComment; }
        public void setStatus(int status) { this.status = status; }
        public void setListaArtistas(Hashtable lista) { this.listaArtistas = lista; }
        public void setListaPalcos(Hashtable lista) { this.listaPalcos = lista; }
        public void setListaComentario(ListaComentario lista) { this.listaComentarios = lista; }
        public void setListaPresenca(ListaPresenca lista) { this.listaPresencas = lista; }


        public Evento getEventoByID(int eventoID)
        {
            return this.dataLayer.getEventoByID(eventoID);
        }

        public int insertEvento()
        {
            this.idEvento = dataLayer.insertEvento(this);

            
            this.status = 1;
            return this.idEvento;
        }

        public bool updateEvento()
        {
            return dataLayer.updateEvento(this);
        }

        public String getOrg(int idOrg)
        {
            return this.dataLayer.getOrg(idOrg);
        }

        public bool setEstadoEvento(int eventID, int status) {
            return this.dataLayer.setEstadoEvento(eventID, status);
        }

        public bool insertArtistEvent(int eventID, int artistID)
        {
            return this.dataLayer.insertArtistEvent(eventID, artistID);
        }

        public bool removeArtistEvent(int eventID, int artistID)
        {
            return this.dataLayer.removeArtistEvent(eventID, artistID);
        }

        public bool insertPalcoEvento(int eventoID, int palcoID)
        {
            return this.dataLayer.insertPalcoEvento(eventoID, palcoID);
        }

        public bool removePalcoEvento(int eventoID, int palcoID)
        {
            return this.dataLayer.removePalcoEvento(eventoID, palcoID);
        }

        public List<String> getCategoriasEvento()
        {
            return this.dataLayer.getCategoriasEvento();
        }
        
    }

}